package com.hospital.common.utils;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

/**
 * 配置文件加载工具类
 * @author yhn
 * @version 1.1
 */
public class PropertiesLoader {

    /**
     * 加载指定名称的 properties 文件（默认使用当前类的类加载器）
     * @param fileName 文件名（如 "jwt.properties"），必须放在 resources 目录下
     * @return Properties 对象
     */
    public static Properties load(String fileName) {
        return load(PropertiesLoader.class.getClassLoader(), fileName);
    }

    /**
     * 通用加载方法：允许传入类加载器和文件名
     * @param classLoader 类加载器（可传入其他模块的类加载器）
     * @param fileName 文件名（如 "config/module.properties"）
     * @return Properties 对象
     */
    public static Properties load(ClassLoader classLoader, String fileName) {
        Properties props = new Properties();

        try (InputStream input = classLoader.getResourceAsStream(fileName)) {
            if (input == null) {
                throw new RuntimeException("配置文件未找到: " + fileName);
            }
            props.load(input);
        } catch (IOException e) {
            throw new RuntimeException("加载配置文件失败: " + fileName, e);
        }

        return props;
    }

    /**
     * 通用加载方法：允许传入类对象和文件名（自动获取类加载器）
     * @param clazz 任意类对象（用于获取其类加载器）
     * @param fileName 文件名（如 "config/module.properties"）
     * @return Properties 对象
     */
    public static Properties load(Class<?> clazz, String fileName) {
        return load(clazz.getClassLoader(), fileName);
    }
}
